home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume10 / cbw / part06 < prev    next >
Encoding:
Internet Message Format  |  1987-06-17  |  50.4 KB

  1. Path: seismo!uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix
  4. Subject: v10i006:  Crypt Breaker's Workbench, Part06/11
  5. Message-ID: <388@uunet.UU.NET>
  6. Date: 19 Jun 87 03:09:15 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 1520
  9. Approved: rs@uunet.uu.net
  10.  
  11. Submitted by: Robert W. Baldwin <BALDWIN@XX.LCS.MIT.EDU>
  12. Mod.sources: Volume 10, Issue 6
  13. Archive-name: cbw/Part06
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then unpack
  17. # it by saving it into a file and typing "sh file".  To overwrite existing
  18. # files, type "sh file -c".  You can also feed this as standard input via
  19. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  20. # will see the following message at the end:
  21. #        "End of archive 6 (of 11)."
  22. # Contents:  foo.perm lpair.c test1.perm
  23. # Wrapped by rs@uunet on Wed Jun 17 18:17:20 1987
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. if test -f foo.perm -a "${1}" != "-c" ; then 
  26.   echo shar: Will not over-write existing file \"foo.perm\"
  27. else
  28. echo shar: Extracting \"foo.perm\" \(16800 characters\)
  29. sed "s/^X//" >foo.perm <<'END_OF_foo.perm'
  30. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  31. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  32. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  33. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  34. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  35. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  36. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  37. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  38. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  39. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  40. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  41. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  42. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  43. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  44. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  45. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  46. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  47. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  48. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  49. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  50. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  51. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  52. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  53. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  54. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  55. X -1  -1  -1  -1  -1  -1 
  56. X 96  -1 124 223  97  19  -1  13  43  44 
  57. X -1  38 231   7  -1 207 179 134 133   5 
  58. X -1  -1  48 160 152  93 162  -1 191  -1 
  59. X 65 103 183  -1  -1  -1 243 242  11 180 
  60. X 87 173 154   8   9  99 112  58  22 108 
  61. X199  95  77  66  -1  62 128 190  47  79 
  62. X215 109  55  -1  73  30  53 178 214  82 
  63. X201 138 206  64 240  -1 228  52 140  59 
  64. X197  -1  69 203  -1 111 137  40  -1  -1 
  65. X -1 195 212  25  -1  51   0   4 251  45 
  66. X -1 122 148  31 227 234 167 202  49  61 
  67. X219  85  46 246  -1  -1  -1 254 211 249 
  68. X144  -1 101 218   2 150 186  -1  56  -1 
  69. X -1 247 164  18  17  -1  -1  86  71  -1 
  70. X 78  -1  -1 222 120 216 226 158 102 189 
  71. X125 225  24  -1  42 159 221 188 147 155 
  72. X 23 210  26  -1 132 232 184 106  -1  -1 
  73. X -1 196 253  41 204  -1  -1 235  67  16 
  74. X 39 192  -1  32 166  -1 126  -1 157 149 
  75. X 57  28 181  -1 241  91 171  80  -1  50 
  76. X -1  70 107  83 174  -1  72  15  -1 233 
  77. X161 118  92 244  68  60 145  -1 123 110 
  78. X237 156 143   3  -1 151 146 104  76 239 
  79. X -1  12 165 209 105 177  -1 220  -1 229 
  80. X 74 194  37  36 213  -1 113 131  -1 119 
  81. X -1  98  -1 172 117  -1 
  82. X 20 122 118 119  -1 229 158  -1 223  -1 
  83. X215  -1 197 249  82 126 237  23  87  93 
  84. X  0  -1 252  17  -1  -1  -1 225  -1 163 
  85. X 52 171  -1 155 214  -1  84  -1 216  85 
  86. X 45 152  -1 181  -1  40 241 235 142 210 
  87. X -1  69  30  83  99 134 212 253  70 144 
  88. X -1  -1 234  -1 132 250 173 114  95  51 
  89. X 58  -1  73  72 175 168 211  -1  92 169 
  90. X176 166  14  53  36  39  -1  18 148 117 
  91. X129 255  78  19 110  68 151 154 101  54 
  92. X244  98 242 147 227 204 128 203 188 254 
  93. X 94 217 170 251  67 231  -1  89   2   3 
  94. X206 146   1 183  -1 209  15 150 106  90 
  95. X184 159  64 141  55 238 195  -1 162 205 
  96. X245 133  48  -1  59 165 121 103  88  -1 
  97. X127  96  41  -1  97  33  -1  -1   6 131 
  98. X187 194 138  29 167 145  81 164  75  79 
  99. X112  31 178  66  -1  74  80  -1 172  -1 
  100. X -1  43 224 123 130 236  -1 160 108 246 
  101. X192 230 190 222 161 136  -1  12 200 213 
  102. X198 239 248 107 105 139 120  -1 247 125 
  103. X 49  76  56 199  34  10  38 111 233  -1 
  104. X -1  -1 193   8 182  27  -1 104 240   5 
  105. X191 115  -1 218  62  47 185  16 135 201 
  106. X228  46 102  -1 100 140 189 208 202  13 
  107. X 65 113  22  57 109  91 
  108. X 90  49  26 132 156 140 212 129  -1 122 
  109. X198  -1  97 148  38  79  25 154  80  -1 
  110. X214 216 248 184 161  16   2 107  66 168 
  111. X 33  -1 195  30  -1  -1  65  -1  14  84 
  112. X222  -1 123  53 136  47  69  45  -1   1 
  113. X125  -1 134  43  -1 102 145 126 238 194 
  114. X 78 232 138 246 224  36  28 225  -1  46 
  115. X130 215 120 188 119 105 231 209  60  15 
  116. X 18  87 185 176  39 160 182  81  -1 158 
  117. X  0 151 235 192 183 200 118  12 174  -1 
  118. X106  -1  55  -1  -1  75 100  27 249 187 
  119. X163 242  -1 230 254 205 179 190  96  74 
  120. X 72  -1   9  42 241  50  57 228 142   7 
  121. X 70 206   3 149  52 227  44 220  62 245 
  122. X  5 221 128 186 244  56 204  -1  13 133 
  123. X -1  91 197 165  17  -1   4 180  89  -1 
  124. X 85  24 193 110 199 153  -1  -1  29 255 
  125. X177 247 226  -1  98 252  83 170 237 116 
  126. X157 191  86  94  23  82 143 109  73 219 
  127. X117 181  93 162  59  32  -1 152  10 164 
  128. X 95  -1 250 239 146 115 131  -1 217  77 
  129. X234  -1   6 251  20  71  21 208  -1 189 
  130. X137 141  40 253  64  67 172 135 127 240 
  131. X113  76  61  -1 210  92  -1 178  58 203 
  132. X229 124 111  -1 144 139  63 171  22 108 
  133. X202 213 175 223 114 169 
  134. X 60  -1  26  79 203 204 122  -1  15  97 
  135. X -1 238 133  33 159   8 165 145  27 191 
  136. X192  69 250  -1  -1 183   2  18  50  65 
  137. X218  57 143  13  -1  -1  -1  93 116 213 
  138. X -1 199  -1 171 109  74  -1 177  56  -1 
  139. X 28  -1  -1 196  -1 227  48  31  80 221 
  140. X  0 248 202 103 233  29 140  -1 170  21 
  141. X216 164 137 190  45 189  -1 193 188   3 
  142. X 58 160 155 181 176  -1 186 104 111 225 
  143. X198 125  -1  37  -1  -1 252   9 231 223 
  144. X169  -1 255  63  87 154  -1  -1 152  44 
  145. X201  88  -1  -1 179 118  38  -1 115 161 
  146. X247 123   6 121 187  91  -1 240 241 239 
  147. X197 207  -1  12  -1 185 138  72 136  -1 
  148. X 66  -1 234  32 150  17 254  -1  -1 226 
  149. X144  -1 108  -1 105  82 228 172 173  14 
  150. X 81 119  -1  -1  71  16 208 246 242 100 
  151. X 68  43 157 158  -1  -1  84  47 229 114 
  152. X -1  83  -1  25 230 135  86 124  78  75 
  153. X 73  19  20  77 245  -1  53 130  90  41 
  154. X210 110  62   4   5 244 211 131 166 219 
  155. X200 206 220  39  -1  -1  70  -1  30 209 
  156. X212  59  -1  99 232  89 149  55 156 178 
  157. X184  98 224  64 142 236 235  -1  11 129 
  158. X127 128 168 249 205 194 167 120  61 243 
  159. X 22  -1  96  -1 146 102 
  160. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  161. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  162. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  163. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  164. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  165. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  166. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  167. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  168. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  169. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  170. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  171. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  172. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  173. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  174. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  175. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  176. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  177. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  178. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  179. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  180. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  181. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  182. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  183. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  184. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  185. X -1  -1  -1  -1  -1  -1 
  186. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  187. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  188. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  189. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  190. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  191. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  192. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  193. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  194. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  195. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  196. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  197. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  198. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  199. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  200. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  201. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  202. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  203. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  204. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  205. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  206. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  207. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  208. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  209. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  210. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  211. X -1  -1  -1  -1  -1  -1 
  212. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  213. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  214. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  215. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  216. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  217. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  218. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  219. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  220. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  221. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  222. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  223. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  224. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  225. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  226. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  227. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  228. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  229. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  230. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  231. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  232. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  233. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  234. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  235. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  236. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  237. X -1  -1  -1  -1  -1  -1 
  238. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  239. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  240. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  241. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  242. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  243. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  244. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  245. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  246. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  247. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  248. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  249. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  250. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  251. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  252. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  253. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  254. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  255. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  256. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  257. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  258. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  259. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  260. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  261. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  262. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  263. X -1  -1  -1  -1  -1  -1 
  264. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  265. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  266. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  267. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  268. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  269. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  270. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  271. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  272. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  273. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  274. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  275. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  276. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  277. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  278. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  279. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  280. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  281. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  282. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  283. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  284. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  285. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  286. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  287. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  288. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  289. X -1  -1  -1  -1  -1  -1 
  290. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  291. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  292. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  293. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  294. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  295. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  296. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  297. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  298. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  299. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  300. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  301. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  302. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  303. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  304. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  305. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  306. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  307. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  308. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  309. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  310. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  311. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  312. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  313. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  314. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  315. X -1  -1  -1  -1  -1  -1 
  316. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  317. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  318. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  319. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  320. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  321. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  322. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  323. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  324. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  325. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  326. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  327. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  328. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  329. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  330. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  331. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  332. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  333. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  334. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  335. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  336. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  337. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  338. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  339. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  340. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  341. X -1  -1  -1  -1  -1  -1 
  342. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  343. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  344. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  345. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  346. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  347. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  348. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  349. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  350. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  351. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  352. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  353. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  354. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  355. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  356. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  357. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  358. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  359. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  360. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  361. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  362. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  363. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  364. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  365. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  366. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  367. X -1  -1  -1  -1  -1  -1 
  368. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  369. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  370. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  371. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  372. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  373. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  374. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  375. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  376. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  377. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  378. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  379. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  380. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  381. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  382. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  383. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  384. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  385. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  386. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  387. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  388. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  389. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  390. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  391. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  392. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  393. X -1  -1  -1  -1  -1  -1 
  394. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  395. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  396. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  397. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  398. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  399. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  400. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  401. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  402. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  403. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  404. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  405. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  406. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  407. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  408. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  409. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  410. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  411. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  412. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  413. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  414. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  415. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  416. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  417. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  418. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  419. X -1  -1  -1  -1  -1  -1 
  420. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  421. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  422. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  423. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  424. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  425. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  426. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  427. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  428. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  429. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  430. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  431. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  432. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  433. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  434. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  435. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  436. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  437. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  438. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  439. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  440. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  441. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  442. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  443. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  444. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  445. X -1  -1  -1  -1  -1  -1 
  446. END_OF_foo.perm
  447. if test 16800 -ne `wc -c <foo.perm`; then
  448.     echo shar: \"foo.perm\" unpacked with wrong size!
  449. fi
  450. # end of overwriting check
  451. fi
  452. if test -f lpair.c -a "${1}" != "-c" ; then 
  453.   echo shar: Will not over-write existing file \"lpair.c\"
  454. else
  455. echo shar: Extracting \"lpair.c\" \(14095 characters\)
  456. sed "s/^X//" >lpair.c <<'END_OF_lpair.c'
  457. X/*
  458. X * Letter pair and equivalence class guessing.
  459. X *
  460. X * Bob Baldwin, May 1985.
  461. X */
  462. X
  463. X#include    <stdio.h>
  464. X#include    <math.h>
  465. X#include    "window.h"
  466. X#include    "terminal.h"
  467. X#include    "layout.h"
  468. X#include    "specs.h"
  469. X#include    "cipher.h"
  470. X
  471. X
  472. X#define    DEBUG        FALSE
  473. X#define    AUTOREPEAT    1    /* Number of times to repeat guess loop. */
  474. X
  475. X#define    LPBLABEL1    "Bigram guess, level %6.3f, prob %6.3f  -- Wait"
  476. X#define    LPBLABEL2    "Bigram guess, level %6.3f, prob %6.3f  -- Done"
  477. X#define    LPBHELP "F3 enters guess, ^G undoes it."
  478. X
  479. X
  480. Xextern    char    mcbuf[];
  481. Xextern    ecinfo    gecinfo;
  482. Xextern    ec_init();
  483. Xextern    lpbdraw(), lpbfirst(), lpbenter(), lpbundo();
  484. X
  485. X/* Gloabal State. */
  486. Xkeyer    lpbktab[] = {
  487. X        {CACCEPT, lpbenter},
  488. X        {CUNDO, lpbundo},
  489. X        {CGO_UP, jogup},
  490. X        {CGO_DOWN, jogdown},
  491. X        {CGO_LEFT, jogleft},
  492. X        {CGO_RIGHT, jogright},
  493. X        {0, NULL},
  494. X};
  495. X
  496. X/* Routine invoked by user to put up the letter pair equivalence class
  497. X * guessing window.
  498. X * The window is drawn empty, and then filled in with the guess.
  499. X * Return NULL if command completes ok.
  500. X */
  501. Xchar    *lpbguess(str)
  502. Xchar    *str;            /* Command line */
  503. X{
  504. X    ecinfo    *ecbi;
  505. X    int        i;
  506. X    gwindow    *ecb;
  507. X    float    lp_accept_level, lp_prob_cutoff;
  508. X
  509. X    ecb = &gbstore;
  510. X    ecbi = &gecinfo;
  511. X    lp_init(mcbuf, refperm(dbsgetblk(&dbstore)), ecbi);
  512. X
  513. X    if ((i = sscanf(str, "%*[^:]: %f %*[^:]: %f",
  514. X            &lp_accept_level, &lp_prob_cutoff)) != 2)  {
  515. X        return("Could not parameters.");
  516. X        }
  517. X
  518. X    gbsswitch(ecb, ((char *) ecbi), lpbktab, lpbfirst, wl_noop, lpbdraw);
  519. X
  520. X    sprintf(statmsg, LPBLABEL1, lp_accept_level, lp_prob_cutoff);
  521. X    gblset(&gblabel, statmsg);
  522. X    gbsclear(ecb);
  523. X    fflush(stdout);
  524. X
  525. X    lp_autoguess(ecbi, lp_accept_level);
  526. X    decode(ecbi->ciphertext, ecbi->plaintext, ecbi->perm);
  527. X
  528. X    sprintf(statmsg, LPBLABEL2, lp_accept_level, lp_prob_cutoff);
  529. X    gblset(&gblabel, statmsg);
  530. X    lpbdraw(ecb);
  531. X
  532. X    return(NULL);
  533. X}
  534. X
  535. X
  536. X/*  (re) Draw the window.
  537. X */
  538. Xlpbdraw(ecb)
  539. Xgwindow    *ecb;
  540. X{
  541. X    int            i;
  542. X    int            row, col;
  543. X    ecinfo        *ecbi;
  544. X
  545. X    ecbi = ((ecinfo *) ecb->wprivate);
  546. X    row = 1;
  547. X    col = 1;
  548. X
  549. X    for (i = 0 ; i < BLOCKSIZE ; i++)  {
  550. X        if (i%LINELEN == 0) {
  551. X            wl_setcur(ecb, gbspos2row(i), gbspos2col(i));
  552. X            }
  553. X        plnchars(1, char2sym(ecbi->plaintext[i]));
  554. X        }
  555. X
  556. X    for (i = gbspos2row(BLOCKSIZE) ; i <= GBHEIGHT ; i++) {
  557. X        wl_setcur(ecb, i, 1);
  558. X        plnchars(LINELEN, ' ');
  559. X        }
  560. X
  561. X    for (i = 1 ; i <= GBHEIGHT ; i++) {
  562. X        wl_setcur(ecb, i, LINELEN+1);
  563. X        plnchars(ecb->wwidth - LINELEN, ' ');
  564. X        }
  565. X
  566. X    wl_setcur(ecb, row, col);
  567. X}
  568. X
  569. X
  570. X/* First time cursor enters window.
  571. X */
  572. Xlpbfirst(ecb, row, col)
  573. Xgwindow    *ecb;
  574. Xint            row, col;
  575. X{
  576. X    usrhelp(&user, LPBHELP);
  577. X    wl_setcur(ecb, row, col);
  578. X}
  579. X
  580. X
  581. X/* Enter the guess into the decryption block.
  582. X */
  583. Xlpbenter(ecb)
  584. Xgwindow    *ecb;
  585. X{
  586. X    ecinfo        *ecbi;
  587. X
  588. X    ecbi = ((ecinfo *) ecb->wprivate);
  589. X    dbsmerge(&dbstore, ecbi->perm);
  590. X    wl_rcursor(ecb);
  591. X}
  592. X
  593. X
  594. X/* Undo the last guess.
  595. X */
  596. Xlpbundo(ecb)
  597. Xgwindow    *ecb;
  598. X{
  599. X    ecinfo        *ecbi;
  600. X
  601. X    ecbi = ((ecinfo *) ecb->wprivate);
  602. X    dbsundo(&dbstore);
  603. X    wl_rcursor(ecb);
  604. X}
  605. X
  606. X
  607. X
  608. X/* Guess at a block using letter pair statistics.
  609. X * The parameter accept_level is the minimum ratio (of estmated prob
  610. X * that the guess is right over estimate prob that some other guess
  611. X * is right) needed to accept a guess.
  612. X * The parameter prob_cutoff is the minimum probability (density) that
  613. X * the guess is right.  This parameter comes into play when there is one
  614. X * guess which looks much better than the rest (i.e., has a high ratio),
  615. X * but in fact all the guesses look pretty bad, so the program should
  616. X * avoid picking one.
  617. X * Modfies eci.
  618. X */
  619. Xlp_autoguess(eci, accept_level, prob_cutoff)
  620. Xreg    ecinfo    *eci;
  621. X    float    accept_level;
  622. X    float    prob_cutoff;
  623. X{
  624. X    int        i;
  625. Xreg    int        c;
  626. X    int        ntried;
  627. Xreg    int        classpos;
  628. X    int        *permp;
  629. X    int        repeat;
  630. X
  631. Xfor(repeat = 0 ; repeat < AUTOREPEAT ; repeat++)  {
  632. X    ntried = 0;
  633. X    for (ntried = 0 ; ntried < BLOCKSIZE ; ntried++)  {
  634. X        classpos = lp_best_pos(eci, 2);
  635. X        if (classpos == NONE)
  636. X            break;
  637. X        c = lp_best_char(eci, classpos,
  638. X                        accept_level - ((repeat == 0) ? 0.0 : 0.0),
  639. X                        prob_cutoff);
  640. X        if (c != NONE) {
  641. X            lp_accept(eci, classpos, c);
  642. X            }
  643. X        }
  644. X#if (AUTOREPEAT > 1)
  645. X    for (i = 0 ; i < eci->nclasses ; i++)  {
  646. X        eci->classlist[i].changed = TRUE;
  647. X        }
  648. X#endif
  649. X    }
  650. X}
  651. X
  652. X
  653. X/* Score a guess using letter pair statistics.
  654. X * Bigger scores are better scores.  They range from 0 to 1.
  655. X * A score of zero means the choice is not possible.
  656. X * The result is the probability density that the guess is correct.
  657. X * Actually, the resulting score is the product of the prob densities
  658. X * of the first and second order statistics.
  659. X */
  660. Xfloat    lp_cscore(gsi)
  661. Xreg    gsinfo    *gsi;
  662. X{
  663. X    extern    float    score2_scale, score1_scale;
  664. X    float    score1, score2;
  665. Xreg    float    sdev1, sdev2;        /* Standard Deviation for 1st and 2nd stats. */
  666. X    int        ccount;
  667. X
  668. X    for (ccount = 0 ; gsi->cpos[ccount] != NONE ; ccount++);
  669. X
  670. X    sdev1 = gsi_1score(gsi);
  671. X    if (sdev1 < 0.0)  return(0.0);
  672. X    score1 = fexp(sdev1);
  673. X    score1 = (score1 * isqrt[ccount]) / score1_scale;
  674. X
  675. X    sdev2 = gsi_2score(gsi);
  676. X    if (sdev2 < 0.0)  return(0.0);
  677. X    score2 = fexp(sdev2);
  678. X    score2 = (score2 * isqrt[ccount]) / score2_scale;
  679. X
  680. X    return(score1 * score2);
  681. X}
  682. X
  683. X
  684. X/* Select best plaintext value for a ciphertext equiv class.
  685. X * The class is identified by the position in the block of one
  686. X * of the characters in the class.  The plaintext value for
  687. X * an entire class can be specified by the plaintext value of
  688. X * one of its members.  This routine returns the best plaintext
  689. X * value for the ciphertext character at position firstpos.
  690. X * If there is not a clear best value, NONE is returned.
  691. X */
  692. Xint    lp_best_char(eci, firstpos, alevel, min_prob)
  693. Xreg        ecinfo    *eci;
  694. Xint        firstpos;
  695. Xfloat    alevel;        /* Level to accept a guess ~= prob(right)/prob(wrong) */
  696. Xfloat    min_prob;
  697. X{
  698. X#if DEBUG
  699. X    int        pvec[BLOCKSIZE+1];
  700. X    char    str[BLOCKSIZE+1];
  701. X#endif
  702. X    float    total_score, score;
  703. X    float    best_score;
  704. X    int        best_char;
  705. Xreg    int        c;
  706. X    int        x,y;
  707. X    int        class;
  708. X    float    count;
  709. Xreg    gsinfo    *gsi;
  710. X    gsinfo    tmpgsi;
  711. X    int        gssbuf[BLOCKSIZE+1];
  712. X
  713. X    gsi = &tmpgsi;
  714. X    gsi_init(gsi, eci->plaintext, gssbuf);
  715. X
  716. X    total_score = 0.0;
  717. X    best_score = 0.0;
  718. X    count = 0.0;
  719. X    best_char = NONE;
  720. X
  721. X    for (c = 0 ; c <= MAXCHAR  ; c++)  {
  722. X        gsi_clear(gsi);
  723. X        if (gsi_class_guess(gsi, eci, firstpos, c) == 0)
  724. X            continue;
  725. X        score = lp_cscore(gsi);
  726. X        if (score > 0.0)  {
  727. X            count += 1.0;
  728. X            total_score += score;
  729. X            }
  730. X        if (score > best_score) {
  731. X            best_score = score;
  732. X            best_char = c;
  733. X            }
  734. X        }
  735. X
  736. X#if DEBUG
  737. X    printf("Total score is %7.4f", total_score);
  738. X    printf(".  Count is %4.0f.\n", count);
  739. X#endif
  740. X    if (total_score == 0.0  ||  count == 0.0  ||  best_char == NONE) {
  741. X#if DEBUG
  742. X        printf("NO GUESSES\n");
  743. X#endif
  744. X        return(NONE);
  745. X        }
  746. X#if DEBUG
  747. X    printf("Best score is %7.4f", best_score);
  748. X    printf(", which is %7.4f fraction of total", best_score/total_score);
  749. X    printf(".\n");
  750. X
  751. X    class = eci->posclass[firstpos];
  752. X    printf("Class reliability is %d.",
  753. X        (2 * eci->classlist[class].npairs) + eci->classlist[class].nchars);
  754. X    printf("  ");
  755. X
  756. X    decode_class(eci, firstpos, best_char, pvec);
  757. X    pvec2str(str, pvec);
  758. X    printf("The best chars are '%s'\n", str);
  759. X#endif
  760. X
  761. X    if ((best_score  >  alevel * (total_score - best_score))
  762. X     && (best_score > min_prob)) {
  763. X        return(best_char);
  764. X        }
  765. X    else {
  766. X        return(NONE);
  767. X        }
  768. X}
  769. X
  770. X
  771. X/* Accept a guess.
  772. X * Updates the eci plaintext to reflect the characters deduced from
  773. X * assuming that the plaintext character at position pos is pchar.
  774. X * It updates the npairs count and used flag in the class info list.
  775. X * The changed flag is set for positions pos-1 and pos+1 (if they exist).
  776. X * The used flag is set for the class(es) that now have an accepted value.
  777. X */
  778. Xlp_accept(eci, firstpos, firstpchar)
  779. Xreg        ecinfo    *eci;
  780. Xint        firstpos;
  781. Xint        firstpchar;
  782. X{
  783. X    int        firstflag;    /* For macro for_pos_in_class. */
  784. X    int        otherpos;
  785. Xreg    int        pos;
  786. X    int        x,y;
  787. X    int        pchar;
  788. X    int        delta;
  789. X    clinfo    *firstclassp, *otherclassp;
  790. Xreg    clinfo    *classp;
  791. X
  792. X    firstpos = firstpos & MODMASK;
  793. X    firstpchar = firstpchar & CHARMASK;
  794. X    x = eci->scipher[firstpos];
  795. X    y = MODMASK & (firstpchar + firstpos);
  796. X
  797. X    eci->perm[x] = y;
  798. X    eci->perm[y] = x;
  799. X
  800. X    firstclassp = &(eci->classlist[eci->posclass[firstpos]]);
  801. X    firstclassp->used = TRUE;
  802. X
  803. X    otherpos = eci->permmap[y];
  804. X    if (otherpos == NONE)  {
  805. X        otherclassp = NULL;
  806. X        }
  807. X      else  {
  808. X        otherclassp = &(eci->classlist[eci->posclass[otherpos]]);
  809. X        otherclassp->used = TRUE;
  810. X        }
  811. X
  812. X
  813. X    delta = y - x;
  814. X    for_pos_in_class(pos, firstpos)  {
  815. X        pchar = MODMASK & (eci->scipher[pos] + delta - pos);
  816. X        eci->plaintext[pos] = pchar;
  817. X        if ((pos - 1) >= 0)  {
  818. X            classp = &(eci->classlist[eci->posclass[pos - 1]]);
  819. X            if (classp != firstclassp)  {
  820. X                classp->changed = TRUE;
  821. X                classp->npairs++;
  822. X                }
  823. X            }
  824. X        if ((pos + 1) < BLOCKSIZE)  {
  825. X            classp = &(eci->classlist[eci->posclass[pos + 1]]);
  826. X            if (classp != firstclassp)  {
  827. X                classp->changed = TRUE;
  828. X                classp->npairs++;
  829. X                }
  830. X            }
  831. X        }
  832. X
  833. X    if (otherpos != NONE)  {
  834. X        delta = x - y;
  835. X        for_pos_in_class(pos, otherpos)  {
  836. X            pchar = MODMASK & (eci->scipher[pos] + delta - pos);
  837. X            eci->plaintext[pos] = pchar;
  838. X            if ((pos - 1) >= 0)  {
  839. X                classp = &(eci->classlist[eci->posclass[pos - 1]]);
  840. X                if (classp != otherclassp)  {
  841. X                    classp->changed = TRUE;
  842. X                    classp->npairs++;
  843. X                    }
  844. X                }
  845. X            if ((pos + 1) < BLOCKSIZE)  {
  846. X                classp = &(eci->classlist[eci->posclass[pos + 1]]);
  847. X                if (classp != otherclassp)  {
  848. X                    classp->changed = TRUE;
  849. X                    classp->npairs++;
  850. X                    }
  851. X                }
  852. X            }
  853. X        }
  854. X}
  855. X
  856. X
  857. X
  858. X/* Pick the best position to do guessing.
  859. X * Use the class info list to select the unused class that will yield
  860. X * the most reliable guesses.
  861. X * The changed flag is cleared to make sure that a class is not considered
  862. X * again unless the reliability of its guesses has changed.
  863. X * At first, all the changed flags should be set.
  864. X * The changed flag for the selected class is cleared.
  865. X * Returns a position or NONE.
  866. X */
  867. Xint    lp_best_pos(eci, min_reliability)
  868. Xreg        ecinfo    *eci;
  869. Xint        min_reliability;
  870. X{
  871. X    int        score;
  872. X    int        best_score, best_pos;
  873. Xreg    clinfo    *classp;
  874. Xreg    clinfo    *endclassp;
  875. X
  876. X    best_score = 0;
  877. X    best_pos = NONE;
  878. X    endclassp = &(eci->classlist[eci->nclasses]);
  879. X    for (classp = &(eci->classlist[0]) ; classp < endclassp ; classp++)  {
  880. X        if ((classp->used) || (!(classp->changed)))
  881. X            continue;
  882. X        score = (2 * (classp->npairs)) + classp->nchars;
  883. X        if (score > best_score)  {
  884. X            best_score = score;
  885. X            best_pos = classp->firstpos;
  886. X            }
  887. X        }
  888. X    if (best_score < min_reliability)
  889. X        return(NONE);
  890. X
  891. X    if (best_pos != NONE)  {
  892. X        eci->classlist[eci->posclass[best_pos]].changed = FALSE;
  893. X        }
  894. X    return(best_pos);
  895. X}
  896. X
  897. X
  898. X/* Fill in equiv class info from given ciphertext block
  899. X * and permutation.
  900. X */
  901. Xlp_init(cipher, perm, eci)
  902. Xchar    cipher[];
  903. Xint        perm[];
  904. Xreg        ecinfo    *eci;
  905. X{
  906. X    int        firstflag;    /* Used by for_pos_in_class */
  907. X    int        i,j;
  908. X    int        firstpos, char_count, pair_count;
  909. Xreg    int        pos;
  910. Xreg    clinfo    *class;
  911. X
  912. X    ec_init(cipher, perm, eci);
  913. X
  914. X    for (i = 0 ; i < BLOCKSIZE ; i++)  {
  915. X        eci->posclass[i] = NONE;
  916. X        }
  917. X
  918. X    eci->nclasses = 0;
  919. X    for (i = 0 ; i < BLOCKSIZE ; i++)  {
  920. X        if ((firstpos = eci->permmap[i]) == NONE)
  921. X            continue;
  922. X        char_count = 0;
  923. X        pair_count = 0;
  924. X        for_pos_in_class(pos, firstpos) {
  925. X            eci->posclass[pos] = eci->nclasses;
  926. X            char_count++;
  927. X            }
  928. X        for_pos_in_class(pos, firstpos) {
  929. X            if ((pos + 1) < BLOCKSIZE)  {
  930. X                 if (eci->posclass[pos + 1] == eci->nclasses)  {
  931. X                    pair_count++;
  932. X                    }
  933. X                else if (eci->perm[eci->scipher[pos + 1]] != NONE)  {
  934. X                    pair_count++;
  935. X                    }
  936. X                }
  937. X            if ((pos - 1) >= 0)  {
  938. X                 if (eci->posclass[pos - 1] == eci->nclasses)  {
  939. X                    /* Don't double count it. */
  940. X                    }
  941. X                else if (eci->perm[eci->scipher[pos - 1]] != NONE)  {
  942. X                    pair_count++;
  943. X                    }
  944. X                }
  945. X            }
  946. X        class = &(eci->classlist[eci->nclasses]);
  947. X        class->nchars = char_count;
  948. X        class->npairs = pair_count;
  949. X        class->firstpos = firstpos;
  950. X        class->changed = TRUE;
  951. X        if (eci->perm[i] != NONE)
  952. X            class->used = TRUE;
  953. X        else
  954. X            class->used = FALSE;
  955. X
  956. X        eci->nclasses++;
  957. X        }
  958. X}
  959. X
  960. X
  961. X/* Initialize a guess info structure.
  962. X * Also clears the guess buffer.
  963. X */
  964. Xgsi_init(gsi, pbuf, gssbuf)
  965. Xreg        gsinfo    *gsi;
  966. X        int        *pbuf;        /* Accepted characters. */
  967. Xreg        int        *gssbuf;    /* Buffer for new guesses. */
  968. X{
  969. Xreg    int        i;
  970. X
  971. X    gsi->cknown = pbuf;
  972. X    gsi->cpos[0] = NONE;
  973. X    gsi->cguessed = gssbuf;
  974. X    for (i = 0 ; i < BLOCKSIZE ; i++)
  975. X        *gssbuf++ = NONE;
  976. X}
  977. X
  978. X
  979. X/* Clear out a guess from a gsi.
  980. X */
  981. Xgsi_clear(gsi)
  982. Xreg    gsinfo    *gsi;
  983. X{
  984. Xreg    int        *ip;
  985. X
  986. X    for (ip = &(gsi->cpos[0]) ; *ip != NONE ; ip++)  {
  987. X        gsi->cguessed[*ip] = NONE;
  988. X        }
  989. X    gsi->cpos[0] = NONE;
  990. X}
  991. X
  992. X
  993. X/* Add to a gsi with the characters deduced from assuming that
  994. X * the character at firstpos is c.
  995. X * If that asumption conflicts with eci->perm, then nothing is added.
  996. X * Returns the number of characters added.
  997. X */
  998. Xint    gsi_class_guess(gsi, eci, firstpos, c)
  999. Xreg        gsinfo    *gsi;
  1000. Xreg        ecinfo    *eci;
  1001. X        int        firstpos;
  1002. X        int        c;
  1003. X{
  1004. X    int        firstflag;    /* For macro for_pos_in_class. */
  1005. X    int        otherpos;
  1006. Xreg    int        pos;
  1007. X    int        x,y;
  1008. X    int        pchar;
  1009. X    int        delta;
  1010. X    int        *cposp;
  1011. X    int        nchars;
  1012. X
  1013. X    for (cposp = &(gsi->cpos[0]) ; *cposp != NONE ; cposp++);
  1014. X    nchars = 0;
  1015. X
  1016. X    firstpos = firstpos & MODMASK;
  1017. X    c = c & CHARMASK;
  1018. X    x = eci->scipher[firstpos];
  1019. X    y = MODMASK & (c + firstpos);
  1020. X
  1021. X    if (perm_conflict(eci->perm, x, y))
  1022. X        return(nchars);
  1023. X
  1024. X    delta = y - x;
  1025. X    for_pos_in_class(pos, firstpos)  {
  1026. X        pchar = MODMASK & (eci->scipher[pos] + delta - pos);
  1027. X        if ((pchar & CHARMASK) != pchar)  {
  1028. X            *cposp = NONE;
  1029. X            return(0);
  1030. X            }
  1031. X        gsi->cguessed[pos] = pchar;
  1032. X        *cposp++ = pos;
  1033. X        nchars++;
  1034. X        }
  1035. X
  1036. X    otherpos = eci->permmap[y];
  1037. X    if (otherpos != NONE)  {
  1038. X        delta = x - y;
  1039. X        for_pos_in_class(pos, otherpos)  {
  1040. X            pchar = MODMASK & (eci->scipher[pos] + delta - pos);
  1041. X            if ((pchar & CHARMASK) != pchar)  {
  1042. X                *cposp = NONE;
  1043. X                return(0);
  1044. X                }
  1045. X            gsi->cguessed[pos] = pchar;
  1046. X            *cposp++ = pos;
  1047. X            nchars++;
  1048. X            }
  1049. X        }
  1050. X    *cposp = NONE;
  1051. X    return(nchars);
  1052. X}
  1053. X
  1054. X
  1055. X/* Dump class table onto a stream.
  1056. X */
  1057. Xlp_dclasses(out, eci)
  1058. XFILE    *out;
  1059. Xecinfo    *eci;
  1060. X{
  1061. X    int        i;
  1062. X
  1063. X    fprintf(out, "\nThere are %d classes.\n", eci->nclasses);
  1064. X    for (i = 0 ; i < eci->nclasses ; i++)  {
  1065. X        fprintf(out, "Singles: %d, pairs: %d,  First member: %d",
  1066. X                eci->classlist[i].nchars, eci->classlist[i].npairs,
  1067. X                eci->classlist[i].firstpos);
  1068. X        fprintf(out, ", flags:");
  1069. X        if (!(eci->classlist[i].used))
  1070. X            fprintf(out, " not");
  1071. X        fprintf(out, " used");
  1072. X        fprintf(out, " and");
  1073. X        if (!(eci->classlist[i].changed))
  1074. X            fprintf(out, " not");
  1075. X        fprintf(out, " changed");
  1076. X        fprintf(out, "\n");
  1077. X        }
  1078. X}
  1079. X
  1080. X
  1081. END_OF_lpair.c
  1082. if test 14095 -ne `wc -c <lpair.c`; then
  1083.     echo shar: \"lpair.c\" unpacked with wrong size!
  1084. fi
  1085. # end of overwriting check
  1086. fi
  1087. if test -f test1.perm -a "${1}" != "-c" ; then 
  1088.   echo shar: Will not over-write existing file \"test1.perm\"
  1089. else
  1090. echo shar: Extracting \"test1.perm\" \(16800 characters\)
  1091. sed "s/^X//" >test1.perm <<'END_OF_test1.perm'
  1092. X -1  -1 116 150 159  64  -1  -1 200 232 
  1093. X -1  -1  63  -1  -1  95  -1 254  -1   8 
  1094. X -1  -1 123 117 243 210 179  -1 119  17 
  1095. X -1  46  -1 203  -1  12  -1  -1  -1  71 
  1096. X -1  -1 204  -1  -1  -1  -1  -1  -1  -1 
  1097. X 74  -1 202  -1  11  81  67  -1 141 213 
  1098. X 66  94  -1 217  29 154   3  -1  -1  -1 
  1099. X -1  -1  -1  93  -1  -1  -1  -1 173  -1 
  1100. X -1  -1  -1 196   4  -1  -1  -1  70  -1 
  1101. X -1 252  41  43  -1  -1  48  61  -1  38 
  1102. X 20  -1 166 208  -1  -1  -1  -1   5  -1 
  1103. X -1 130  -1  -1 207  -1 227 190  -1 125 
  1104. X -1  -1  -1  -1  -1  -1  51 120  -1  13 
  1105. X139  -1 127 246 248  18  -1  -1 136 167 
  1106. X -1 113  -1  -1 244 114  -1 198 201 189 
  1107. X144  22 140  -1 109  83 131 180  -1  -1 
  1108. X -1  50 250  -1  37  -1  -1 242  23 214 
  1109. X -1 112  -1  -1  -1 233  -1 161 188 104 
  1110. X -1 103  -1  -1  89  80  -1  -1  19  85 
  1111. X192 147  -1  65 199  -1 247 245  -1  60 
  1112. X -1 102  -1  88 224  -1  -1  45  -1  -1 
  1113. X -1  -1  -1 215 230  -1  -1  -1  -1  -1 
  1114. X -1 251  -1  14  -1  -1  -1  87  -1  73 
  1115. X158  -1 110 168  -1 152 197 108 133 148 
  1116. X -1  -1 184 240 100  -1 111 170 183  -1 
  1117. X 42  10 218  82  -1  -1 
  1118. X 96 114 124 223  97  19  -1  13  43  -1 
  1119. X -1  38 231   7 200 207 179 134 133   5 
  1120. X100  -1  48 160 152  93 162 168 191 127 
  1121. X -1 103 183  -1 252 193 243 242  11 180 
  1122. X 87 173 154   8  -1  -1 112  -1  22  -1 
  1123. X199  95  -1  66 163  62 128 190  -1  79 
  1124. X215 109  55 245  73  -1  53 178 214  82 
  1125. X201 138 206  64 240 182 228  -1  -1  59 
  1126. X197 248  69 203 175 111  -1  40  -1 139 
  1127. X -1 195  -1  25 217  51   0   4 251  -1 
  1128. X 20  -1 148  31 227 234 167 202  -1  61 
  1129. X219  85  46 246   1 135 142 254 211  -1 
  1130. X144  -1  -1 218   2 150 186  29  56 169 
  1131. X185 247 164  18  17 115 250  -1  71  89 
  1132. X -1 205 116 222 120  -1 226 158 102 189 
  1133. X125  -1  24  -1  42 159 221 188 147 155 
  1134. X 23 210  26  54 132  -1 184 106  27 129 
  1135. X -1 196 253  41 204  84 238 235  67  16 
  1136. X 39 192  75  32 166 130 126 224 157 149 
  1137. X 57  28 181  35 241  91 171  80 208  50 
  1138. X 14  70 107  83 174 141  72  15 198 233 
  1139. X161 118  -1 244  68  60  -1  94 123 110 
  1140. X237 156 143   3 187  -1 146 104  76 239 
  1141. X -1  12  -1 209 105 177  -1 220 176 229 
  1142. X 74 194  37  36 213  63 113 131  81  -1 
  1143. X136  98  34 172 117  -1 
  1144. X -1 122  -1 119  71 229  -1  28 223  -1 
  1145. X215  -1 197  -1  82 126 237  23  87  93 
  1146. X -1  -1 252  17  -1 177 137  -1   7  -1 
  1147. X -1 171  -1 155  -1  -1  -1  60  -1  -1 
  1148. X -1 152  -1  -1  -1  -1 241  -1 142  -1 
  1149. X243  69  -1  -1  99 134  -1  -1  -1 144 
  1150. X 37  63  -1  61  -1 250 173 114  -1  51 
  1151. X -1   4  73  72  -1 168 211  -1  92 169 
  1152. X176 166  14  -1  -1  -1  -1  18 148 117 
  1153. X129  -1  78  19 110  -1 151 154 101  54 
  1154. X244  98 242 147 227  -1  -1  -1 188 254 
  1155. X 94 217 170 251  67 231 179  89  -1   3 
  1156. X -1  -1   1 183  -1 209  15 150  -1  90 
  1157. X184 159  -1 141  55 238  -1  26 162  -1 
  1158. X245 133  48  -1  59  -1  -1 103  88  -1 
  1159. X127  96  41 186  97  33  -1 219  -1 131 
  1160. X187 194 138  -1 167  -1  81 164  75  79 
  1161. X112  31 178  66  -1  -1  80  25 172 116 
  1162. X -1  -1  -1 123 130 236 153 160 108 246 
  1163. X192  -1 190  -1 161  -1  -1  12 200 213 
  1164. X198 239 248  -1  -1  -1  -1  -1 247 125 
  1165. X -1  76  -1 199  -1  10  -1 111 233 157 
  1166. X -1  -1  -1   8  -1  -1  -1 104 240   5 
  1167. X -1 115  -1 218  -1  -1 185  16 135 201 
  1168. X228  46 102  50 100 140 189 208 202  -1 
  1169. X 65 113  22  -1 109  -1 
  1170. X 90  49  26 132 156 140 212  -1 147  -1 
  1171. X198  54  97 148  38  79  25 154  80  -1 
  1172. X214  -1 248 184 161  16   2 107  66 168 
  1173. X 33 112 195  30 166 236  65 155  14  84 
  1174. X222  -1 123  53 136  -1  69  -1 218   1 
  1175. X125 243 134  43  11 102 145 126 238 194 
  1176. X 78 232 138 246 224  36  28  -1 150  46 
  1177. X130 215 120 188 119 105 231 209  60  15 
  1178. X 18  87  -1 176  39 160  -1  81 159 158 
  1179. X  0 151 235 192 183 200  -1  12 174 101 
  1180. X -1  99  55 196 207  75  -1  27  -1 187 
  1181. X163 242  31 230 254 205 179 190  -1  74 
  1182. X 72 233  -1  42 241  50  57 228 142  -1 
  1183. X 70  -1   3 149  52 227  44 220  62 245 
  1184. X  5 221 128 186 244  56  -1   8  13 133 
  1185. X 68  91 197 165  17  37   4  -1  89  88 
  1186. X 85  24 193 110 199 153  34 201  29 255 
  1187. X -1 247 226  -1  98 252  83  -1 237 116 
  1188. X -1 191  -1  94  23  -1 143 109  73 219 
  1189. X117 181  93 162  59  32 103 152  10 164 
  1190. X 95 167 250 239  -1 115  -1 104 217  77 
  1191. X -1  -1   6 251  20  71  -1 208  48 189 
  1192. X137 141  40 253  64  -1 172 135 127  -1 
  1193. X113  76  61 121  -1  92  35 178  58 203 
  1194. X -1 124 111  51 144 139  63 171  22  -1 
  1195. X202 213 175 223 114 169 
  1196. X 60  -1  26  -1 203 204 122  -1  15  97 
  1197. X -1  -1 133  -1 159   8  -1 145  27 191 
  1198. X192  -1 250 117  -1 183   2  18  50  65 
  1199. X218  -1 143  -1  -1  -1  -1  93  -1  -1 
  1200. X -1 199  -1 171  -1  74  -1  -1  -1  -1 
  1201. X 28  -1 162  -1  -1 227  -1  -1  -1 221 
  1202. X  0 248  -1 103 233  29 140  95 170  -1 
  1203. X -1  -1 137 190  45  -1  -1  -1  -1  -1 
  1204. X -1  -1  -1 181  -1  94  -1 104 111  -1 
  1205. X198  -1  -1  37  85  67 252   9 231 223 
  1206. X169  -1  -1  63  87  -1  -1  -1 152  -1 
  1207. X201  88 180  -1 179 118  -1  23 115 161 
  1208. X247  -1   6  -1 187  -1  -1 240 241 239 
  1209. X197 207  -1  12 151 185  -1  72  -1 148 
  1210. X 66 214  -1  32 150  17 254 251 139  -1 
  1211. X144 134 108  -1  -1  -1  -1 172 173  14 
  1212. X -1 119  52  -1  -1  -1 208 246 242 100 
  1213. X 68  43 157 158  -1  -1  -1  -1 229 114 
  1214. X112  83  -1  25 230 135  -1 124  -1  -1 
  1215. X 73  19  20  -1  -1  -1  -1 130  90  41 
  1216. X210 110  -1   4   5 244 211 131 166 219 
  1217. X200 206 220  -1 141  -1  -1  -1  30 209 
  1218. X212  59  -1  99 232  -1  -1  55  -1 178 
  1219. X184  98 224  64  -1 236 235  -1  -1 129 
  1220. X127 128 168 249 205  -1 167 120  61 243 
  1221. X 22 147  96  -1 146  -1 
  1222. X -1  -1  -1 150 223 175  -1  -1  25 204 
  1223. X -1 122 181 198  -1  56  -1  -1 202  67 
  1224. X -1  -1  49 168  -1   8 145  -1 177  -1 
  1225. X 32 211  30  84  57 238  -1  83 217  -1 
  1226. X160  -1 108  89  -1  -1 228 225  -1  22 
  1227. X207 176  -1  -1  -1  -1  15  34 169 219 
  1228. X152 189 107  -1 193 123  95  19  -1  -1 
  1229. X -1 253  -1 164  -1  -1  -1  -1 230  -1 
  1230. X -1  -1 209  37  33  -1 205 213  -1  43 
  1231. X220  -1 194  -1  -1  66  -1 134  -1  -1 
  1232. X190  -1 103 102  -1  -1  -1  62  42 240 
  1233. X116 236 115  -1 156 112 110 229  -1  -1 
  1234. X131 149  11  65  -1  -1 140 196  -1  -1 
  1235. X239 120 243 139  97  -1 154 174  -1 133 
  1236. X126  -1  -1  -1  -1  26 182  -1 232 121 
  1237. X  3 162  60  -1 136 192 114 171  -1 185 
  1238. X 40  -1 151  -1  73  -1  -1 233  23  58 
  1239. X197 157  -1  -1 137   5  51  28  -1 227 
  1240. X -1  12 146  -1  -1 159 255  -1  -1  61 
  1241. X100 221 155  64  92  -1 127 170  13  -1 
  1242. X244 210  18 246   9  86 208  50 206  82 
  1243. X201  31 249  87 242  -1  -1  38  -1  59 
  1244. X 90 191  -1   4  -1  47  -1 179  46 117 
  1245. X 78  -1 148 167  -1 237 111 235  35 130 
  1246. X109  -1 214 132 200  -1 203  -1  -1 212 
  1247. X -1  -1  -1  71  -1 186 
  1248. X120 146 232  66 217  81 113  -1 144 239 
  1249. X 44  49 230  -1 166  60 151 218  34  -1 
  1250. X 80 128 193 249  -1 148 116 210 183 165 
  1251. X 94  -1 109 133  18 192 163  73 252 158 
  1252. X 61  -1 195  46  10 102  43  90 131  11 
  1253. X122  -1 135 172  -1 207 188  58  57 227 
  1254. X 15  40  77  99 143 138   3 231 226 136 
  1255. X221  -1  -1  37 253 104  -1  62 254 185 
  1256. X 20   5  -1 132 173 189 124  91 150 255 
  1257. X 47  87 212 184  30  -1  -1 149 187  63 
  1258. X178  -1  45 228  75 180 177 141 125  32 
  1259. X121  -1  -1   6 161  -1  26 244 224 137 
  1260. X  0 110  50 157  86 108  -1 156  21 147 
  1261. X238  48  83  33 240  52  69 119  65 175 
  1262. X -1 107 160  64   8 176   1 129  25  97 
  1263. X 88  16 225  -1 243 164 127 123  39  -1 
  1264. X142 114  -1  36 155  29  14 169 233 167 
  1265. X211  -1  53  84  -1 139 145 106 100 204 
  1266. X105 201 223  28  93  79 203  98  56  85 
  1267. X -1 251  35  22 205  42  -1 219 213 235 
  1268. X -1 181 222 186 179 194  -1  55 246 215 
  1269. X 27 170  92 198  -1 209  -1   4  17 197 
  1270. X -1  70 202 182 118 152  68  59 103 245 
  1271. X 12  67   2 168  -1 199 247 250 130   9 
  1272. X134 248  -1 154 117 229 208 236 241  23 
  1273. X237 191  38  74  78  89 
  1274. X -1 165 187 203   8  -1  -1 168   4 124 
  1275. X131  36  86  -1  -1  83  54  -1  -1 150 
  1276. X221  56 172 144  65 218  42  33 109 252 
  1277. X 58  93 160  27 115 214  11  -1  40 117 
  1278. X 38  -1  26 126 228  94 247 152 235 232 
  1279. X -1 181  87  -1  16 108  21 138  30 147 
  1280. X 66 222 250  84 174  24  60 199 116  90 
  1281. X170 245 239 242 213 118  -1 224 209  -1 
  1282. X -1 151  98  15  63 193  12  52  -1  -1 
  1283. X 69  99 169  31  45 217 156 104  82  91 
  1284. X185  -1 223 133  97 143 127  -1  55  28 
  1285. X114  -1 134 141 110  34  68  39  75 237 
  1286. X -1 179  -1 157   9 130  43 106 167 246 
  1287. X125  10 176 103 112 255 251 142  57 200 
  1288. X155 113 137 105  23 177 173  59 192 189 
  1289. X 19  81  47 161  -1 140  96 123  -1  -1 
  1290. X 32 153 220  -1  -1   1 190 128   7  92 
  1291. X 70 186  22 146  64 233 132 145 231 121 
  1292. X254  51  -1 216 210 100 171   2  -1 149 
  1293. X166 198 148  85 206  -1 208 249 191  67 
  1294. X139 207  -1   3 241  -1 194 201 196  78 
  1295. X184  -1 244  74  35 238 183  95  25 230 
  1296. X162  20  61 102  77  -1 236  -1  44  -1 
  1297. X219 178  49 175  -1  48 226 119 215  72 
  1298. X -1 204  73  -1 212  71 129  46  -1 197 
  1299. X 62 136  29  -1 180 135 
  1300. X -1  78  -1 188 184  32 151 236 130  16 
  1301. X 57  -1 209 240 213  63   9 157 123  84 
  1302. X147  -1 172 219 224 242  49  53 220  -1 
  1303. X146 196   5  66 231 254 179  -1 210 197 
  1304. X227  74 112  -1 160 204  69 193 158  26 
  1305. X 59  -1  65  27  77 142 194  10 141  50 
  1306. X199 207  -1  15  91  52  33 155 191  46 
  1307. X -1  -1 252  -1  41 202 144  54   1  -1 
  1308. X100 189 140 103  19  89 234  97 247  85 
  1309. X -1  64  -1 225 162 153 206  87 120 104 
  1310. X 80 248 117  83  99 124 134 177 135 118 
  1311. X -1 119  42 164 148 139 183 102 109 111 
  1312. X 98 241 208  18 105 175 192  -1 176  -1 
  1313. X  8 235 205 198 106 108  -1 182 221 115 
  1314. X 82  58  55 253  76 232  30  20 114  -1 
  1315. X168   6  -1  95  -1  67 251  17  48 222 
  1316. X 44  -1  94 171 113 174  -1 229 150  -1 
  1317. X -1 163  22 201 165 125 128 107  -1  36 
  1318. X195 238 137 116   4 203  -1 250   3  81 
  1319. X239  68 126  47  56 180  31  39 133  60 
  1320. X211 173  75 185  45 132  96  61 122  12 
  1321. X 38 200  -1  14  -1 218 255 244 215  23 
  1322. X 28 138 159 246  24  93  -1  40  -1 167 
  1323. X -1  34 145  -1  86 131   7  -1 181 190 
  1324. X 13 121  25  -1 217 249 223  88 101 245 
  1325. X187 156  72 143  35 216 
  1326. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1327. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1328. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1329. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1330. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1331. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1332. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1333. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1334. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1335. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1336. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1337. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1338. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1339. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1340. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1341. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1342. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1343. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1344. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1345. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1346. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1347. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1348. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1349. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1350. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1351. X -1  -1  -1  -1  -1  -1 
  1352. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1353. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1354. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1355. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1356. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1357. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1358. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1359. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1360. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1361. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1362. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1363. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1364. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1365. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1366. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1367. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1368. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1369. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1370. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1371. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1372. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1373. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1374. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1375. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1376. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1377. X -1  -1  -1  -1  -1  -1 
  1378. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1379. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1380. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1381. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1382. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1383. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1384. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1385. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1386. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1387. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1388. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1389. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1390. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1391. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1392. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1393. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1394. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1395. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1396. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1397. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1398. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1399. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1400. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1401. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1402. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1403. X -1  -1  -1  -1  -1  -1 
  1404. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1405. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1406. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1407. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1408. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1409. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1410. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1411. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1412. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1413. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1414. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1415. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1416. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1417. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1418. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1419. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1420. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1421. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1422. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1423. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1424. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1425. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1426. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1427. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1428. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1429. X -1  -1  -1  -1  -1  -1 
  1430. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1431. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1432. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1433. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1434. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1435. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1436. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1437. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1438. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1439. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1440. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1441. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1442. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1443. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1444. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1445. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1446. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1447. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1448. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1449. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1450. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1451. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1452. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1453. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1454. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1455. X -1  -1  -1  -1  -1  -1 
  1456. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1457. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1458. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1459. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1460. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1461. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1462. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1463. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1464. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1465. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1466. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1467. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1468. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1469. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1470. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1471. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1472. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1473. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1474. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1475. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1476. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1477. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1478. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1479. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1480. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1481. X -1  -1  -1  -1  -1  -1 
  1482. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1483. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1484. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1485. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1486. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1487. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1488. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1489. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1490. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1491. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1492. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1493. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1494. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1495. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1496. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1497. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1498. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1499. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1500. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1501. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1502. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1503. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1504. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1505. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1506. X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
  1507. X -1  -1  -1  -1  -1  -1 
  1508. END_OF_test1.perm
  1509. if test 16800 -ne `wc -c <test1.perm`; then
  1510.     echo shar: \"test1.perm\" unpacked with wrong size!
  1511. fi
  1512. # end of overwriting check
  1513. fi
  1514. echo shar: End of archive 6 \(of 11\).
  1515. cp /dev/null ark6isdone
  1516. MISSING=""
  1517. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  1518.     if test ! -f ark${I}isdone ; then
  1519.     MISSING="${MISSING} ${I}"
  1520.     fi
  1521. done
  1522. if test "${MISSING}" = "" ; then
  1523.     echo You have unpacked all 11 archives.
  1524.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1525. else
  1526.     echo You still need to unpack the following archives:
  1527.     echo "        " ${MISSING}
  1528. fi
  1529. ##  End of shell archive.
  1530. exit 0
  1531.